/***************************************************************************
 *
 * Copyright 2015-2019 BES.
 * All rights reserved. All unpublished rights reserved.
 *
 * No part of this work may be used or reproduced in any form or by any
 * means, or stored in a database or retrieval system, without prior written
 * permission of BES.
 *
 * Use of this work is governed by a license granted by BES.
 * This work contains confidential and proprietary information of
 * BES. which is protected by copyright, trade secret,
 * trademark and other intellectual property rights.
 *
 ****************************************************************************/
#ifndef __REG_IOMUXIP_BEST1000_H_
#define __REG_IOMUXIP_BEST1000_H_

#include "plat_types.h"

/* iomuxip register */
#define IOMUXIP_MUX04_REG_OFFSET 0x04
#define IOMUXIP_MUX04_UART1_GPIO_EN_SHIFT (0)
#define IOMUXIP_MUX04_UART1_GPIO_EN_MASK ((0x1)<<IOMUXIP_MUX04_UART1_GPIO_EN_SHIFT)
#define IOMUXIP_MUX04_UART2_FLOW_EN_SHIFT (1)
#define IOMUXIP_MUX04_UART2_FLOW_EN_MASK ((0x1)<<IOMUXIP_MUX04_UART2_FLOW_EN_SHIFT)
#define IOMUXIP_MUX04_UART2_GPIO_EN_SHIFT (2)
#define IOMUXIP_MUX04_UART2_GPIO_EN_MASK ((0x1)<<IOMUXIP_MUX04_UART2_GPIO_EN_SHIFT)
#define IOMUXIP_MUX04_UART0_FLOW_EN_SHIFT (3)
#define IOMUXIP_MUX04_UART0_FLOW_EN_MASK ((0x1)<<IOMUXIP_MUX04_UART0_FLOW_EN_SHIFT)
#define IOMUXIP_MUX04_UART0_GPIO_EN_SHIFT (4)
#define IOMUXIP_MUX04_UART0_GPIO_EN_MASK ((0x1)<<IOMUXIP_MUX04_UART0_GPIO_EN_SHIFT)
#define IOMUXIP_MUX04_UART02_GPIO_EN_SHIFT (5)
#define IOMUXIP_MUX04_UART02_GPIO_EN_MASK ((0x1)<<IOMUXIP_MUX04_UART02_GPIO_EN_SHIFT)
#define IOMUXIP_MUX04_SPI2_GPIO4_EN_SHIFT (6)
#define IOMUXIP_MUX04_SPI2_GPIO4_EN_MASK ((0x1)<<IOMUXIP_MUX04_SPI2_GPIO4_EN_SHIFT)
#define IOMUXIP_MUX04_SPI2_GPIO_EN_SHIFT (7)
#define IOMUXIP_MUX04_SPI2_GPIO_EN_MASK ((0x1)<<IOMUXIP_MUX04_SPI2_GPIO_EN_SHIFT)
#define IOMUXIP_MUX04_SPI_GPIO4_EN_SHIFT (8)
#define IOMUXIP_MUX04_SPI_GPIO4_EN_MASK ((0x1)<<IOMUXIP_MUX04_SPI_GPIO4_EN_SHIFT)
#define IOMUXIP_MUX04_SPI_GPIO_EN_SHIFT (9)
#define IOMUXIP_MUX04_SPI_GPIO_EN_MASK ((0x1)<<IOMUXIP_MUX04_SPI_GPIO_EN_SHIFT)
#define IOMUXIP_MUX04_SPILCD_GPIO4_EN_SHIFT (10)
#define IOMUXIP_MUX04_SPILCD_GPIO4_EN_MASK ((0x1)<<IOMUXIP_MUX04_SPILCD_GPIO4_EN_SHIFT)
#define IOMUXIP_MUX04_SPILCD_GPIO_EN_SHIFT (11)
#define IOMUXIP_MUX04_SPILCD_GPIO_EN_MASK ((0x1)<<IOMUXIP_MUX04_SPILCD_GPIO_EN_SHIFT)
#define IOMUXIP_MUX04_I2S1_GPIO_EN_SHIFT (12)
#define IOMUXIP_MUX04_I2S1_GPIO_EN_MASK ((0x1)<<IOMUXIP_MUX04_I2S1_GPIO_EN_SHIFT)
#define IOMUXIP_MUX04_I2S2_GPIO_EN_SHIFT (13)
#define IOMUXIP_MUX04_I2S2_GPIO_EN_MASK ((0x1)<<IOMUXIP_MUX04_I2S2_GPIO_EN_SHIFT)
#define IOMUXIP_MUX04_I2S3_GPIO_EN_SHIFT (14)
#define IOMUXIP_MUX04_I2S3_GPIO_EN_MASK ((0x1)<<IOMUXIP_MUX04_I2S3_GPIO_EN_SHIFT)
#define IOMUXIP_MUX04_SDIO_GPIO_EN_SHIFT (15)
#define IOMUXIP_MUX04_SDIO_GPIO_EN_MASK ((0x1)<<IOMUXIP_MUX04_SDIO_GPIO_EN_SHIFT)
#define IOMUXIP_MUX04_SDMMC_GPIO_EN_SHIFT (16)
#define IOMUXIP_MUX04_SDMMC_GPIO_EN_MASK ((0x1)<<IOMUXIP_MUX04_SDMMC_GPIO_EN_SHIFT)
#define IOMUXIP_MUX04_SPDIF_DIN_EN_SHIFT (18)
#define IOMUXIP_MUX04_SPDIF_DIN_EN_MASK ((0x1)<<IOMUXIP_MUX04_SPDIF_DIN_EN_SHIFT)
#define IOMUXIP_MUX04_SPDIF_DOUT_EN_SHIFT (19)
#define IOMUXIP_MUX04_SPDIF_DOUT_EN_MASK ((0x1)<<IOMUXIP_MUX04_SPDIF_DOUT_EN_SHIFT)
#define IOMUXIP_MUX04_SPDIF1_DIN_EN_SHIFT (20)
#define IOMUXIP_MUX04_SPDIF1_DIN_EN_MASK ((0x1)<<IOMUXIP_MUX04_SPDIF1_DIN_EN_SHIFT)
#define IOMUXIP_MUX04_SPDIF1_DOUT_EN_SHIFT (21)
#define IOMUXIP_MUX04_SPDIF1_DOUT_EN_MASK ((0x1)<<IOMUXIP_MUX04_SPDIF1_DOUT_EN_SHIFT)
#define IOMUXIP_MUX04_MIC_DIG_EN_SHIFT (22)
#define IOMUXIP_MUX04_MIC_DIG_EN_MASK ((0x1)<<IOMUXIP_MUX04_MIC_DIG_EN_SHIFT)
#define IOMUXIP_MUX04_MIC2_DIG_EN_SHIFT (23)
#define IOMUXIP_MUX04_MIC2_DIG_EN_MASK ((0x1)<<IOMUXIP_MUX04_MIC2_DIG_EN_SHIFT)
#define IOMUXIP_MUX04_CLK32K_IN_SHIFT (24)
#define IOMUXIP_MUX04_CLK32K_IN_MASK ((0x1)<<IOMUXIP_MUX04_CLK32K_IN_SHIFT)
#define IOMUXIP_MUX04_CLK_OUT_EN_SHIFT (25)
#define IOMUXIP_MUX04_CLK_OUT_EN_MASK ((0x1)<<IOMUXIP_MUX04_CLK_OUT_EN_SHIFT)
#define IOMUXIP_MUX04_CLK_OUT2_EN_SHIFT (26)
#define IOMUXIP_MUX04_CLK_OUT2_EN_MASK ((0x1)<<IOMUXIP_MUX04_CLK_OUT2_EN_SHIFT)
#define IOMUXIP_MUX04_REQ_26M_EN_SHIFT (27)
#define IOMUXIP_MUX04_REQ_26M_EN_MASK ((0x1)<<IOMUXIP_MUX04_REQ_26M_EN_SHIFT)
#define IOMUXIP_MUX04_PTA_EN_SHIFT (28)
#define IOMUXIP_MUX04_PTA_EN_MASK ((0x1)<<IOMUXIP_MUX04_PTA_EN_SHIFT)
#define IOMUXIP_MUX04_SMP_EN_SHIFT (31)
#define IOMUXIP_MUX04_SMP_EN_MASK ((0x1)<<IOMUXIP_MUX04_SMP_EN_SHIFT)

#define IOMUXIP_MUX08_REG_OFFSET 0x08
#define IOMUXIP_MUX0C_REG_OFFSET 0x0C

#define IOMUXIP_MUX10_REG_OFFSET 0x10
#define IOMUXIP_MUX10_PWM_LED_EN_0_SHIFT (0)
#define IOMUXIP_MUX10_PWM_LED_EN_0_MASK ((0x1)<<IOMUXIP_MUX10_PWM_LED_EN_0_SHIFT)
#define IOMUXIP_MUX10_PWM_LED_EN_1_SHIFT (1)
#define IOMUXIP_MUX10_PWM_LED_EN_1_MASK ((0x1)<<IOMUXIP_MUX10_PWM_LED_EN_1_SHIFT)
#define IOMUXIP_MUX10_PWM_LED_EN_2_SHIFT (2)
#define IOMUXIP_MUX10_PWM_LED_EN_2_MASK ((0x1)<<IOMUXIP_MUX10_PWM_LED_EN_2_SHIFT)
#define IOMUXIP_MUX10_PWM_LED_EN_3_SHIFT (3)
#define IOMUXIP_MUX10_PWM_LED_EN_3_MASK ((0x1)<<IOMUXIP_MUX10_PWM_LED_EN_3_SHIFT)
#define IOMUXIP_MUX10_RF_ANA_SW_EN_SHIFT (4)
#define IOMUXIP_MUX10_RF_ANA_SW_EN_MASK ((0x1)<<IOMUXIP_MUX10_RF_ANA_SW_EN_SHIFT)
#define IOMUXIP_MUX10_RF_ANA_SW1_EN_SHIFT (5)
#define IOMUXIP_MUX10_RF_ANA_SW1_EN_MASK ((0x1)<<IOMUXIP_MUX10_RF_ANA_SW1_EN_SHIFT)
#define IOMUXIP_MUX10_RF_ANA_SW2_EN_SHIFT (6)
#define IOMUXIP_MUX10_RF_ANA_SW2_EN_MASK ((0x1)<<IOMUXIP_MUX10_RF_ANA_SW2_EN_SHIFT)
#define IOMUXIP_MUX10_ECO_I2C_EN_SHIFT (8)
#define IOMUXIP_MUX10_ECO_I2C_EN_MASK ((0x1)<<IOMUXIP_MUX10_ECO_I2C_EN_SHIFT)
#define IOMUXIP_MUX10_SDMMC_DT_N_OUT_GROUP_SHIFT (11)
#define IOMUXIP_MUX10_SDMMC_DT_N_OUT_GROUP_MASK ((0x1)<<IOMUXIP_MUX10_SDMMC_DT_N_OUT_GROUP_SHIFT)
#define IOMUXIP_MUX10_P3_0_N_PULLUP_SHIFT (15)
#define IOMUXIP_MUX10_P3_0_N_PULLUP_MASK ((0x1)<<IOMUXIP_MUX10_P3_0_N_PULLUP_SHIFT)
#define IOMUXIP_MUX10_12M_EN_SHIFT (16)
#define IOMUXIP_MUX10_12M_EN_MASK ((0x1)<<IOMUXIP_MUX10_12M_EN_SHIFT)
#define IOMUXIP_MUX10_I2C_GPIO_MODE_SHIFT (31)
#define IOMUXIP_MUX10_I2C_GPIO_MODE_MASK ((0x1)<<IOMUXIP_MUX10_I2C_GPIO_MODE_SHIFT)

#define IOMUXIP_MUX20_REG_OFFSET 0x20

#define IOMUXIP_MUX40_REG_OFFSET 0x40
#define IOMUXIP_MUX40_PWRKEY_DOWN_INT_CLR_SHIFT (0)
#define IOMUXIP_MUX40_PWRKEY_DOWN_INT_CLR_MASK ((0x1)<<IOMUXIP_MUX40_PWRKEY_DOWN_INT_CLR_SHIFT)
#define IOMUXIP_MUX40_PWRKEY_UP_INT_CLR_SHIFT (1)
#define IOMUXIP_MUX40_PWRKEY_UP_INT_CLR_MASK ((0x1)<<IOMUXIP_MUX40_PWRKEY_UP_INT_CLR_SHIFT)
#define IOMUXIP_MUX40_PWRKEY_DOWN_INT_SHIFT (2)
#define IOMUXIP_MUX40_PWRKEY_DOWN_INT_MASK ((0x1)<<IOMUXIP_MUX40_PWRKEY_DOWN_INT_SHIFT)
#define IOMUXIP_MUX40_PWRKEY_UP_INT_SHIFT (3)
#define IOMUXIP_MUX40_PWRKEY_UP_INT_MASK ((0x1)<<IOMUXIP_MUX40_PWRKEY_UP_INT_SHIFT)
#define IOMUXIP_MUX40_PWRKEY_DOWN_INT_EN_SHIFT (4)
#define IOMUXIP_MUX40_PWRKEY_DOWN_INT_EN_MASK ((0x1)<<IOMUXIP_MUX40_PWRKEY_DOWN_INT_EN_SHIFT)
#define IOMUXIP_MUX40_PWRKEY_UP_INT_EN_SHIFT (5)
#define IOMUXIP_MUX40_PWRKEY_UP_INT_EN_MASK ((0x1)<<IOMUXIP_MUX40_PWRKEY_UP_INT_EN_SHIFT)
#define IOMUXIP_MUX40_PWRKEY_DOWN_INT_MASK_SHIFT (6)
#define IOMUXIP_MUX40_PWRKEY_DOWN_INT_MASK_MASK ((0x1)<<IOMUXIP_MUX40_PWRKEY_DOWN_INT_MASK_SHIFT)
#define IOMUXIP_MUX40_PWRKEY_UP_INT_MASK_SHIFT (7)
#define IOMUXIP_MUX40_PWRKEY_UP_INT_MASK_MASK ((0x1)<<IOMUXIP_MUX40_PWRKEY_UP_INT_MASK_SHIFT)
#define IOMUXIP_MUX40_PWRKEY_VAL_SHIFT (31)
#define IOMUXIP_MUX40_PWRKEY_VAL_MASK ((0x1)<<IOMUXIP_MUX40_PWRKEY_VAL_SHIFT)

#define IOMUXIP_MUX44_REG_OFFSET 0x44
#define IOMUXIP_MUX44_BT_SPI_RF_ENABLE (1 << 0)
#define IOMUXIP_MUX44_BT_SPI_PMU_ENABLE (1 << 1)
#define IOMUXIP_MUX44_BT_SPI_ANA_ENABLE (1 << 2)
#define IOMUXIP_MUX44_MCU_SPI_RF_ENABLE (1 << 3)
#define IOMUXIP_MUX44_MCU_SPI_PMU_ENABLE (1 << 4)
#define IOMUXIP_MUX44_MCU_SPI_ANA_ENABLE (1 << 5)

#endif
